//
// Created by HhL on 2021/7/7.
//
#include <stdio.h>
#include <string.h>
#include "../../include/c_utils.h"

void test_str();

void change(char* arr);

void test_point_change();


void test_strcpy();

void test_strcat();

void test_strlen();

void test_my_strcmp();

void test_my_strchr();

int main() {
    /* 我的第一个 C 程序 */
//    printf("Hello, World! \n");
//    test_str();
//    test_point_change();
//    test_strcpy();
//    test_strcat();
//    test_strlen();
//    test_my_strcmp();
    test_my_strchr();
    return 0;
}



void test_my_strchr() {
    char str[] = "I welcome any ideas from readers， of course.";
    char *lc = strchr(str, 'o');
    printf("strchr： %s\n", lc);
    char *rc = my_strchr(str, 'o');
    printf("strrchr： %s\n", rc);
//    printf("最终的目标字符串：%d\n", string1);
}
void test_my_strcmp() {
    char src1[] = "2223";
    char src2[] = "2222";
    printf("最终的目标字符串长度大小 s1 -s2：%d\n",  my_strcmp(src1,src2));
}


void test_strlen() {
    char src1[50] = "1111";
    int len,len1;
    len = my_strlen(src1);
    len1 = my_strlen1(src1);
    printf("最终的目标字符串长度 len：%d\n", len);
    printf("最终的目标字符串长度 len1：%d\n", len1);
}

void test_strcat() {
//    char dest[] = {'s','s','a'};
//    char src[] = {'f','c','k'};
//    strcat(dest, src);//
//    printf("最终的目标字符串： %s\n", dest);

    char src1[50] = "1111";

    char dest1[50] = "2222";

    my_strcat(dest1, src1);

    printf("最终的目标字符串： |%s| \n", dest1);

}

void test_strcpy() {
    char src[40];
    strcpy(src, "fuck");
    printf("最终的目标字符串： %s\n", src);
    my_strcpy(src, "fuck!");
    printf("最终的目标字符串： %s\n", src);
    char ss[] = {'h', 'l', '\0'};//
    my_strcpy1(src, ss);
    printf("最终的目标字符串： %s\n", src);
}






void test_point_change() {
    char str[] = "china";
    change(str);
    printf("%s\n", str);

    char str1[] = {'C', 'h', 'i', 'n', 'a', '\0'};
    change(str1);
    printf("%s\n", str1);

    char* str3 = "china";
    change(str3);//会报错
    printf("%s\n", str3);
}

/*
 * 引用传递，类似java浅拷贝
 */
void change(char* arr) {
    arr[0] = 'H';
}

void test_str() {
    char str1[] = {'C', 'h', 'i', 'n', 'a', '\0'};//需要添加'\0' 可以修改
    char str2[] = "china"; //len = 6
    char* str3 = "china"; // 8 字节
    char* str5 = "c";
    char str4[] = {'C', 'h', '\0', 'n', 'a', '\0'};//需要添加'\0'
    printf("%s,%s,%s \n", str1, str2, str3);
    printf("%s \n", str4);
    str1[1] = 'H';
    printf("%s \n", str1);
    str2[1] = 'H';
    printf("%s \n", str2);
//    str3[1]='H'; //引用可变对应的值不可变
//    获得数组元素个数
    printf(" sizeof str1 : %lu \n", sizeof(str1) / sizeof(char));
    printf(" sizeof str2 : %lu \n", sizeof(str2) / sizeof(char));
    printf(" sizeof str3 : %lu \n", sizeof(str3));
    printf(" sizeof str5 : %lu \n", sizeof(str5));
    printf("%s \n", str3);
}
